package com.ep.general.komunikat;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.ep.general.GeneralClassMdt;
import com.ep.general.RodzajUzytkownika;
import com.ep.general.komunikat.db.Komunikat;

public class KomunikatMdt extends GeneralClassMdt<Komunikat> {

	public KomunikatMdt() {
		super(Komunikat.class);
	}

	public List<Komunikat> getForAdministrator(int administratorId,
			StatusKomunikatu status) {
		getSession().beginTransaction();
		Criteria crit = getSession().createCriteria(Komunikat.class);
		crit.add(Restrictions.eq("autorId", administratorId));
		crit.add(Restrictions.eq("rodzajAutora",
				RodzajUzytkownika.ADMINISTRATOR));
		crit.add(Restrictions.eq("status", status));
		crit.addOrder(Order.desc("data"));

		return list(crit);
	}

	public List<Komunikat> getForInstruktor(int instruktorId,
			StatusKomunikatu status) {
		getSession().beginTransaction();
		Criteria crit = getSession().createCriteria(Komunikat.class);
		crit.add(Restrictions.eq("autorId", instruktorId));
		crit.add(Restrictions.eq("rodzajAutora", RodzajUzytkownika.INSTRUKTOR));
		crit.add(Restrictions.eq("status", status));
		crit.addOrder(Order.desc("data"));

		return list(crit);
	}

	public List<Komunikat> getForKursant(int kursantId, StatusKomunikatu status) {
		getSession().beginTransaction();
		Criteria crit = getSession().createCriteria(Komunikat.class);
		crit.add(Restrictions.eq("autorId", kursantId));
		crit.add(Restrictions.eq("rodzajAutora", RodzajUzytkownika.KURSANT));
		crit.add(Restrictions.eq("status", status));
		crit.addOrder(Order.desc("data"));

		return list(crit);
	}
}
